package org.jeecg.modules.wmhb.entity;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecgframework.poi.excel.annotation.ExcelCollection;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.List;

/**
 * @Description: 任务表
 * @Author: jeecg-boot
 * @Date:   2024-09-05
 * @Version: V1.0
 */
@Data
@TableName("wm_task")
@ApiModel(value="wm_task对象", description="任务表")
public class WmTask implements Serializable {
    private static final long serialVersionUID = 1L;

	/**主键*/
	@TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private java.lang.String id;
	/**创建人*/
    @ApiModelProperty(value = "创建人")
    private java.lang.String createBy;
	/**创建日期*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    private java.util.Date createTime;
	/**更新人*/
    @ApiModelProperty(value = "更新人")
    private java.lang.String updateBy;
	/**更新日期*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新日期")
    private java.util.Date updateTime;
	/**所属部门*/
    @ApiModelProperty(value = "所属部门")
    private java.lang.String sysOrgCode;
	/**任务书ID*/
	@Excel(name = "任务书ID", width = 15)
    @ApiModelProperty(value = "任务书ID")
    private java.lang.String wmTaskbookId;
    /**任务书*/
    @Excel(name = "任务书", width = 15)
    @ApiModelProperty(value = "任务书")
    @TableField(exist = false)
    private WmTaskbook wmTaskbook;
    /**合同*/
    @TableField(exist = false)
    @ApiModelProperty(value = "合同")
    private WmContract wmContract;
    /**项目*/
    @TableField(exist = false)
    @ApiModelProperty(value = "项目")
    private WmProject wmProject;
	/**任务名称*/
	@Excel(name = "任务名称", width = 15)
    @ApiModelProperty(value = "任务名称")
    private java.lang.String name;
	/**任务编码*/
	@Excel(name = "任务编码", width = 15)
    @ApiModelProperty(value = "任务编码")
    private java.lang.String code;
	/**负责人*/
	@Excel(name = "负责人", width = 15)
    @ApiModelProperty(value = "负责人")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    private java.lang.String chargeBy;
    /**合同产品树ID*/
    @Excel(name = "合同产品树ID", width = 15)
    @ApiModelProperty(value = "合同产品树ID")
    @Dict(dictTable = "wm_contract_product", dicText = "name", dicCode = "id")
    private java.lang.String wmContractProductId;
    /**产品ID*/
    @Excel(name = "产品ID", width = 15)
    @ApiModelProperty(value = "产品ID")
    @Dict(dictTable = "wm_item", dicText = "name", dicCode = "id")
    private java.lang.String wmItemId;
	/**进度*/
	@Excel(name = "进度", width = 15)
    @ApiModelProperty(value = "进度")
    private java.lang.String progress;
	/**设计图纸*/
	@Excel(name = "设计图纸", width = 15)
    @ApiModelProperty(value = "设计图纸")
    private java.lang.String designFile;
	/**进度权重*/
	@Excel(name = "进度权重", width = 15)
    @ApiModelProperty(value = "进度权重")
    private java.lang.String weight;
    /**任务书类型*/
    @Excel(name = "任务书类型", width = 15, dicCode = "taskbook_type")
    @ApiModelProperty(value = "任务书类型")
    @Dict(dicCode = "taskbook_type")
    private java.lang.String taskbookType;
    /**任务书类型名称*/
    @TableField(exist = false)
    @ApiModelProperty(value = "任务书类型名称")
    private java.lang.String taskbookType_dictText;
	/**任务书状态*/
    @TableField(exist = false)
    @ApiModelProperty(value = "任务书状态")
    private java.lang.String taskbookStatus;
    /**状态*/
    @ApiModelProperty(value = "状态")
    private java.lang.String status;
    /**状态名称*/
    @TableField(exist = false)
    @ApiModelProperty(value = "状态名称")
    private java.lang.String status_dictText;
    /**是否发货单位*/
    @Excel(name = "是否发货单位", width = 15, dicCode = "sys_yes_no")
    @Dict(dicCode = "sys_yes_no")
    @ApiModelProperty(value = "是否发货单位")
    private java.lang.String isSendUnit;
	/**当前节点ID*/
	@Excel(name = "当前节点ID", width = 15)
    @ApiModelProperty(value = "当前节点ID")
    private java.lang.String currentNodeId;
    /**当前节点索引*/
    @Excel(name = "当前节点索引", width = 15)
    @ApiModelProperty(value = "当前节点索引")
    private java.lang.Integer currentNodeIndex;
    /**当前节点名称*/
    @TableField(exist = false)
    @ApiModelProperty(value = "当前节点名称")
    private java.lang.String currentNodeId_dictText;
    /**当前节点开始日期*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "当前节点开始日期")
    private java.util.Date currentNodeTime;
    /**任务持续天数*/
    @TableField(exist = false)
    @ApiModelProperty(value = "当前节点结束日期")
    private java.util.Date currentNodeEndTime;
    /**部门计划开始时间*/
    @TableField(exist = false)
    @ApiModelProperty(value = "部门计划开始时间")
    private java.util.Date depPlanBeginTime;
    /**部门计划结束时间*/
    @TableField(exist = false)
    @ApiModelProperty(value = "部门计划结束时间")
    private java.util.Date depPlanEndTime;
	/**计划开始时间*/
	@Excel(name = "计划开始时间", width = 20, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "计划开始时间")
    private java.util.Date planBeginTime;
	/**计划完成时间*/
	@Excel(name = "计划完成时间", width = 20, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "计划完成时间")
    private java.util.Date planEndTime;
	/**实际开始时间*/
	@Excel(name = "实际开始时间", width = 20, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "实际开始时间")
    private java.util.Date factBeginTime;
	/**实际完成时间*/
	@Excel(name = "实际完成时间", width = 20, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "实际完成时间")
    private java.util.Date factEndTime;
	/**租户ID*/
	@Excel(name = "租户ID", width = 15)
    @ApiModelProperty(value = "租户ID")
    private java.lang.String tenantId;
	/**产品物料标识*/
	@Excel(name = "产品物料标识", width = 15, dicCode = "item_or_product")
	@Dict(dicCode = "item_or_product")
    @ApiModelProperty(value = "产品物料标识")
    private java.lang.String itemOrProduct;
    /**规格*/
    @Excel(name = "规格", width = 15)
    @ApiModelProperty(value = "规格")
    private java.lang.String specification;
    /**单位*/
    @Excel(name = "单位", width = 15, dicCode = "unit_of_measure")
    @Dict(dicCode = "unit_of_measure")
    @ApiModelProperty(value = "单位")
    private java.lang.String unitOfMeasure;
    /**批次号*/
    @Excel(name = "批次号", width = 15)
    @ApiModelProperty(value = "批次号")
    private java.lang.String batchNo;
    /**数量*/
    @Excel(name = "数量", width = 15)
    @ApiModelProperty(value = "数量")
    private java.lang.Double quantity;
    /**尺寸*/
    @Excel(name = "尺寸", width = 15)
    @ApiModelProperty(value = "尺寸")
    private java.lang.String size;
    /**完成数量*/
    @Excel(name = "完成数量", width = 15)
    @ApiModelProperty(value = "完成数量")
    private java.lang.Double completeNum;
    /**出库数量*/
    @Excel(name = "出库数量", width = 15)
    @ApiModelProperty(value = "出库数量")
    private java.lang.Double saleNum;
    /**到货数量*/
    @Excel(name = "到货数量", width = 15)
    @ApiModelProperty(value = "到货数量")
    private java.lang.Double arriveNum;
    /**调试数量*/
    @Excel(name = "调试数量", width = 15)
    @ApiModelProperty(value = "调试数量")
    private java.lang.Double debugNum;
    /**是否开启*/
    @Excel(name = "是否开启", width = 15, dicCode = "enable_flag")
    @Dict(dicCode = "enable_flag")
    @ApiModelProperty(value = "是否开启")
    private java.lang.String enableFlag;
    /**能否编辑流程*/
    @Dict(dicCode = "sys_yes_no")
    @ApiModelProperty(value = "能否编辑流程")
    private java.lang.String canEditFlow;
    /**是否设计起点*/
    @Dict(dicCode = "sys_yes_no")
    @ApiModelProperty(value = "是否设计起点")
    private java.lang.String isStartPoint;
    /**报料任务ID*/
    @Excel(name = "报料任务ID", width = 15)
    @ApiModelProperty(value = "报料任务ID")
    private java.lang.String orderTaskId;
    /**事业部ID*/
    @Excel(name = "事业部ID", width = 15)
    @ApiModelProperty(value = "事业部ID")
    @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
    private java.lang.String buId;
    /**工艺设计ID*/
    @Excel(name = "工艺设计ID", width = 15)
    @ApiModelProperty(value = "工艺设计ID")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    private java.lang.String designUserId;
    /**调试用户ID*/
    @Excel(name = "调试用户ID", width = 15)
    @ApiModelProperty(value = "调试用户ID")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    private java.lang.String debugUserId;
    /**仓库用户ID或工程人员ID*/
    @Excel(name = "仓库用户ID", width = 15)
    @ApiModelProperty(value = "仓库用户ID")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    private java.lang.String storageUserId;
    /**工艺用户ID*/
    @Excel(name = "工艺用户ID", width = 15)
    @ApiModelProperty(value = "工艺用户ID")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    private java.lang.String processUserId;
	/**所有层级父节点*/
	@Excel(name = "所有层级父节点", width = 15)
    @ApiModelProperty(value = "所有层级父节点")
    private java.lang.String ancestors;
	/**任务类型*/
	@Excel(name = "任务类型", width = 15, dicCode = "task_type")
	@Dict(dicCode = "task_type")
    @ApiModelProperty(value = "任务类型")
    private java.lang.String type;
    /**计划工时*/
    @Excel(name = "计划工时", width = 15)
    @ApiModelProperty(value = "计划工时")
    private java.lang.String planWorkHour;
	/**备注*/
	@Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private java.lang.String remark;
	/**父级节点*/
	@Excel(name = "父级节点", width = 15)
    @ApiModelProperty(value = "父级节点")
    private java.lang.String pid;
	/**是否有子节点*/
	@Excel(name = "是否有子节点", width = 15, dicCode = "yn")
	@Dict(dicCode = "yn")
    @ApiModelProperty(value = "是否有子节点")
    private java.lang.String hasChild;
    /**物料类型*/
    @Excel(name = "物料类型", width = 15, dicCode = "item_type")
    @Dict(dicCode = "item_type")
    private String itemType;       // 物料类型（五金类，塑料类等）

    /**树形key*/
    @TableField(exist = false)
    private java.lang.String key;
    /**树形parentId*/
    @TableField(exist = false)
    private java.lang.String parentId;
    /**树形isLeaf*/
    @TableField(exist = false)
    private Boolean isLeaf;
    /**树形title*/
    @TableField(exist = false)
    private java.lang.String title;
    /**子任务列表*/
    @TableField(exist = false)
    @ExcelCollection(name="子任务列表")
    @ApiModelProperty(value = "子任务列表")
    private List<WmTask> children;
    /**子任务列表*/
    @TableField(exist = false)
    @ExcelCollection(name="任务流程部门列表")
    @ApiModelProperty(value = "任务流程部门列表")
    private List<WmTaskFlow> wmTaskFlowList;
    /**附加项是否确认*/
    @TableField(exist = false)
    private Boolean isExtraConfirm;
    /**任务持续天数*/
    @TableField(exist = false)
    private java.lang.Integer useDayNum;
    /**当前节点需求时间*/
    @TableField(exist = false)
    private java.lang.Integer needDayNum;
    /**颜色管理*/
    @TableField(exist = false)
    private java.lang.String color;
    /**任务书流程ID*/
    @TableField(exist = false)
    @ApiModelProperty(value = "任务书流程ID")
    private java.lang.String wmTaskbookFlowId;
    /**任务日志列表*/
    @TableField(exist = false)
    @ApiModelProperty(value = "任务日志列表")
    private List<WmTaskLog> wmTaskLogList;

    /**当前BOM版本*/
    @Excel(name = "当前BOM版本", width = 15)
    @ApiModelProperty(value = "当前BOM版本")
    private java.lang.String currentVersion;

}
